package com.wwk.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.wwk.dao.CheckItemDao;
import com.wwk.entity.PageResult;
import com.wwk.entity.QueryPageBean;
import com.wwk.pojo.CheckItem;
import com.wwk.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Classname CheckItemServiceImpl
 * @Description TODO
 * @Date 2020/10/30 11:43
 * @Created by com.wwk
 * @Author com.wwk
 */
@Service(interfaceClass = CheckItemService.class)
@Transactional
public class CheckItemServiceImpl implements CheckItemService {
    //注入Dao对象
    @Autowired
    private CheckItemDao itemDao;

    @Override
    public void add(CheckItem checkItem) {
        itemDao.add(checkItem);
    }

    @Override
    public PageResult findPage(QueryPageBean pageBean) {
        //基于Mybatis分页助手插件实现分页;静态方法，传递两个参数（当前页码，每页查询条数）
        PageHelper.startPage(pageBean.getCurrentPage(),pageBean.getPageSize());
        //使用上面方法紧跟着的第一个select方法会被分页，也就是说PageHelper.startPage后面紧跟着select语句
        //调用dao去查询
        //必须在这里获取想要获取的数据，不然在网络传输到controller中数据就获取不到了，只是个list
        Page<CheckItem> page = itemDao.selectByCondition(pageBean.getQueryString());
        return new PageResult(page.getTotal(),page.getResult());
    }

    @Override
    public void deleteById(Integer id) {
        //先判断是否已在检查组中，在的话不能删
        final long countByCheckItemId = itemDao.findCountByCheckItemId(id);
        if(countByCheckItemId>0){
            //当前检查项被引用，不能删除
            throw new RuntimeException("当前检查项被引用，不能删除");
        }
        itemDao.deleteById(id);
    }

    @Override
    public void edit(CheckItem item) {
        itemDao.edit(item);
    }

    @Override
    public CheckItem findById(Integer itemId) {
        return itemDao.findById(itemId);
    }


}
